package com.yuke.cloud.service.smc.controller.frontend;

import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yuke.cloud.common.util.DateUtil;
import com.yuke.cloud.common.util.excel.ExcelOutUtil;
import com.yuke.cloud.service.smc.dto.DmsVisitDto;
import com.yuke.cloud.service.smc.service.DmsSendService;
import com.yuke.cloud.service.smc.service.DmsVisitService;
import com.yuke.cloud.service.smc.service.ShopService;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import static com.yuke.cloud.common.util.excel.ExcelOutUtil.getMergePaperPath;
import static com.yuke.cloud.common.util.excel.ExcelOutUtil.helpdown;
import static com.yuke.cloud.common.util.excel.ZipUtil.fileToZip;

@Slf4j
@RestController
@RequestMapping("/shop/excel")
public class SmcExcelOut {

    @Resource
    private DmsVisitService dmsVisitService;

    @Resource
    private ShopService shopService;

    @Resource
    private DmsSendService dmsSendService;



    @RequestMapping("/visitExcel")
    @ResponseBody
    public void exportBill(@ApiParam(name = "page", value = "分页值", defaultValue = "0") @RequestParam(defaultValue = "1") Integer page,
                           @ApiParam(name = "size", value = "每分页返回的记录数", defaultValue = "0") @RequestParam(defaultValue = "1000") Integer size,
                           @RequestBody(required = false) DmsVisitDto dmsVisitDto,
                           HttpServletRequest request, HttpServletResponse response) throws IOException {
        //excel标题
        String[] title ={ "序号", "业务员ID", "业务员名称", "店铺ID", "店铺名称", "店铺地址","拜访结果","拜访描述","打卡时间"};

        String [] properties = new String[]{"index", "userId", "userName", "storeId","storeName", "address","visitStatus","discript","createTime"};
        //excel文件名
        String fileName = "业务员拜访店铺" + System.currentTimeMillis() + ".xls";

        //sheet名
        String sheetName = "业务员拜访店铺统计表";

        //zip文件名
        String zipName = "业务员拜访店铺统计表";

        //zip路径名
        String zipNameString = zipName+".zip";

        //不同系统文件夹的生成
        String mergePaperPath = getMergePaperPath(new Date());


        //存入地址
        List<File> tempPath = new ArrayList<>();

        boolean flag =true;

        while(flag){

            List<Map> map = new ArrayList<>();

            int index = 1;

            PageHelper.startPage(page, size);

            List<DmsVisitDto> list1 = dmsVisitService.selectVisitByCondition(dmsVisitDto);

            PageInfo pageInfo = new PageInfo(list1);

            List<DmsVisitDto> list = pageInfo.getList();

            for (DmsVisitDto visitDto : list) {

                Map value = JSON.parseObject(JSON.toJSONString(visitDto), Map.class);

                if (visitDto.getVisitStatus()!=null){
                    switch(visitDto.getVisitStatus().toString()){

                        case "1" :value.put("visitStatus","同意合作");
                            break;
                        case "2" :value.put("visitStatus","下载APP感兴趣");
                            break;
                        case "3" :value.put("visitStatus","没有结果");
                            break;
                        case "4" :value.put("visitStatus","直接拒绝");
                            break;
                        default:
                    }
                }

                value.put("index",String.valueOf(index++));
                value.put("createTime",DateUtil.getStringDate(visitDto.getCreateTime()));
                value.put("userId",visitDto.getUserId().toString());
                value.put("storeId",visitDto.getStoreId().toString());
                map.add(value);
            }


            //创建HSSFWorkbook
            ExcelOutUtil excelExport = new ExcelOutUtil();
            excelExport.setFileName(fileName);
            excelExport.setData(map);
            excelExport.setHeardKey(properties);
            excelExport.setFontSize(14);
            excelExport.setSheetName(sheetName);
            excelExport.setTitle(sheetName);
            excelExport.setHeardList(title);
            String s = excelExport.exportExport(request, response, page, 2, mergePaperPath);

            tempPath.add(new File(s));

            if (list == null || list.size() < size){
                flag=false;
                break;
            }

            page++;
        }


        fileToZip(mergePaperPath,mergePaperPath,zipName);

        helpdown(request,response,mergePaperPath+zipNameString);

        //删除文件
        for (File temp : tempPath) {
            temp.delete();
        }
        //删除 压缩包
        new File(mergePaperPath+zipNameString).delete();
    }

//    @RequestMapping("/sendExcel")
//    @ResponseBody
//    public void export(@ApiParam(name = "page", value = "分页值", defaultValue = "1") @RequestParam(defaultValue = "1") Integer page,
//                       @ApiParam(name = "size", value = "每分页返回的记录数", defaultValue = "1000") @RequestParam(defaultValue = "1000") Integer size,
//                       @RequestBody(required = false) DmsSendDto dmsSendDto,
//                       HttpServletRequest request, HttpServletResponse response) throws IOException {
//        //excel标题
//        String[] title ={ "序号", "司机ID", "司机用户名", "订单ID", "订单金额", "支付类型","配送状态","任务类型","送货完成时间"};
//
//        String [] properties = new String[]{"index", "userId", "userName", "orderId","amountPay", "payType","sendStatus","sendType","sendTime"};
//        //excel文件名
//        String fileName = "司机送货" + System.currentTimeMillis() + ".xls";
//
//        //sheet名
//        String sheetName = "司机送货表";
//
//        //zip文件名
//        String zipName = "司机送货表";
//
//        //zip路径名
//        String zipNameString = zipName+".zip";
//
//        //不同系统文件夹的生成
//        String mergePaperPath = getMergePaperPath(new Date());
//
//        ZipUtil zipUtil = new ZipUtil();
//
//        //存入地址
//        List<File> tempPath = new ArrayList<>();
//
//        boolean flag =true;
//
//        while(flag){
//
//            List<Map> map = new ArrayList<>();
//
//            int index = 1;
//
//            PageHelper.startPage(page, size);
//
//            //List<DmsSendDto> list1 = dmsSendService.selectSendByCondition(dmsVisitDto);
//            List<DmsSendDto> list1 = dmsSendService.findList(dmsSendDto);
//
//
//            PageInfo pageInfo = new PageInfo(list1);
//
//            List<DmsSendDto> list = pageInfo.getList();
//
//            for (DmsSendDto sendDto : list) {
//
//                Map value = JSON.parseObject(JSON.toJSONString(sendDto), Map.class);
//
//                if (sendDto.getPayType()!=null){
//                    switch(sendDto.getPayType().toString()){
//                        case "1" :value.put("payType","现金");
//                            break;
//                        case "2" :value.put("payType","支付宝");
//                            break;
//                        case "3" :value.put("payType","微信");
//                            break;
//                        case "4" :value.put("payType","账户余额");
//                            break;
//                        case "5" :value.put("payType","不支付的");
//                            break;
//                    }
//                }
//
//                if (sendDto.getSendStatus()!=null){
//                    switch(sendDto.getSendStatus().toString()){
//                        case "0" :value.put("sendStatus","未处理");
//                            break;
//                        case "1" :value.put("sendStatus","司机已接单");
//                            break;
//                        case "2" :value.put("sendStatus","已开始发货");
//                            break;
//                        case "3" :value.put("sendStatus","已收货");
//                            break;
//                        case "4" :value.put("sendStatus","转单");
//                            break;
//                        case "5" :value.put("sendStatus","退回");
//                            break;
//                        case "6" :value.put("sendStatus","自提");
//                            break;
//                        case "7" :value.put("sendStatus","其他");
//                            break;
//                    }
//                }
//                if (sendDto.getSendType()!=null){
//                    switch(sendDto.getSendType().toString()){
//                        case "0" :value.put("sendType","未知");
//                            break;
//                        case "1" :value.put("sendType","发货");
//                            break;
//                        case "2" :value.put("sendType","进货");
//                            break;
//                        case "9" :value.put("sendType","其他");
//                            break;
//                    }
//                }
//                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//
//                if (sendDto.getSendTime()!=null) {
//
//                    String s = simpleDateFormat.format(sendDto.getSendTime());
//
//                    value.put("sendTime",s);
//
//                }
//
//                value.put("index",index++);
//
//                map.add(value);
//            }
//
//
//            //创建HSSFWorkbook
//            ExcelOutUtil excelExport = new ExcelOutUtil();
//            excelExport.setFileName(fileName);
//            excelExport.setData(map);
//            excelExport.setHeardKey(properties);
//            excelExport.setFontSize(14);
//            excelExport.setSheetName(sheetName);
//            excelExport.setTitle(sheetName);
//            excelExport.setHeardList(title);
//            String s = excelExport.exportExport(request, response, page, 2, mergePaperPath);
//
//            tempPath.add(new File(s));
//
//            if (list == null || list.size() < size){
//                flag=false;
//                break;
//            }
//
//            page++;
//        }
//
//
//        zipUtil.fileToZip(mergePaperPath,mergePaperPath,zipName);
//
//        helpdown(request,response,mergePaperPath+zipNameString);
//
//        //删除文件
//        for (File temp : tempPath) {
//            temp.delete();
//        }
//        //删除 压缩包
//        new File(mergePaperPath+zipNameString).delete();
//    }
}

